package br.ucb.rest.controle.servlet.impl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.ucb.rest.controle.servlet.AbstractServlet;
import br.ucb.rest.negocio.impl.CardapioBOS;
import br.ucb.rest.negocio.impl.GrupoPedidoBOS;
import br.ucb.rest.negocio.impl.MesaBOS;
import br.ucb.rest.persistencia.vo.CardapioVO;
import br.ucb.rest.persistencia.vo.GrupoPedidoVO;
import br.ucb.rest.persistencia.vo.PedidoVO;
import br.ucb.rest.persistencia.vo.TipoStatusVO;
import br.ucb.rest.util.Constantes;

@WebServlet(urlPatterns={"/pedido"})
public class PedidoServlet extends AbstractServlet {

	public PedidoServlet() {
		super();
	}
	
	public void registrarPedido(HttpServletRequest request, HttpServletResponse response) {
		int quantidadeItens = Integer.parseInt(request.getParameter("qtdItens"));
		Integer nuMesa = Integer.parseInt(request.getParameter("nuMesa"));
		
		String identificadorIpad = request.getParameter("identificadorIpad");
		System.out.println("Identificador iPad: "+identificadorIpad);
		
		
		List<PedidoVO> pedidoJunto = new ArrayList<PedidoVO>();
		List<PedidoVO> pedidoImediato = new ArrayList<PedidoVO>();
		
		for (int i=0; i<quantidadeItens; i++) {
			
			Integer nuCardapio = Integer.parseInt(request.getParameter("nuCardapio_"+i));
			Integer qtdItem = Integer.parseInt(request.getParameter("qtdItem_"+i));
			Boolean inAgora = Boolean.valueOf(request.getParameter("inAgora_"+i));
			
			PedidoVO item = new PedidoVO();
			item.setQtdItem(qtdItem);
			item.setDtHora(new Date(System.currentTimeMillis()));
			
			CardapioVO ref = CardapioBOS.getInstance().recuperarPorId(nuCardapio);
			item.setCardapioVO(ref);
			
			
			if (inAgora) {
				pedidoImediato.add(item);
			}else {
				pedidoJunto.add(item);
			}
		}
		GrupoPedidoVO grupoJunto = new GrupoPedidoVO();
		grupoJunto.setColPedidoVO(pedidoJunto);
		grupoJunto.setIdentificadorIpad(identificadorIpad);
		grupoJunto.setDataHoraPedido(new Date(System.currentTimeMillis()));
		grupoJunto.setTipoStatusVO(new TipoStatusVO(Constantes.STATUS_NA_COZINHA));
		grupoJunto.setMesaVO(MesaBOS.getInstance().recuperarPorNumeroMesa(nuMesa));
		GrupoPedidoBOS.getInstance().incluirGrupo(grupoJunto, identificadorIpad);
		
		GrupoPedidoVO grupoImediato = new GrupoPedidoVO();
		grupoImediato.setColPedidoVO(pedidoImediato);
		grupoImediato.setIdentificadorIpad(identificadorIpad);
		grupoImediato.setDataHoraPedido(new Date(System.currentTimeMillis()));
		grupoImediato.setTipoStatusVO(new TipoStatusVO(Constantes.STATUS_NO_BALCAO));
		grupoImediato.setMesaVO(MesaBOS.getInstance().recuperarPorNumeroMesa(nuMesa));
		GrupoPedidoBOS.getInstance().incluirGrupo(grupoImediato, identificadorIpad);
		
		try {
			response.getOutputStream().write((grupoJunto.getNuGrupo()+","+grupoJunto.getNumeroPedido()).getBytes());
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
}
